package be.ipl.diapero.ucc;

import java.util.List;
import java.util.Map;

import javax.ejb.Remote;

import be.ipl.diapero.domaine.Joueur;
import be.ipl.diapero.domaine.Partie;
import be.ipl.diapero.domaine.Tour;
import be.ipl.diapero.exceptions.ArgumentInvalideException;
import be.ipl.diapero.exceptions.PartieExistanteException;
import be.ipl.diapero.exceptions.PartieInaccessibleException;

@Remote
public interface GestionPartie {

	Partie creerPartie(String nom) throws ArgumentInvalideException, PartieExistanteException;
	boolean commencerPartie(Partie partie);
	boolean annulerPartie(Partie partie);
	boolean estEnCours(Partie partie);
	Map<String, Integer> getJoueursGemmes(Partie partie);
	Joueur getVainqueur(Partie partie);
	List<Joueur> listerJoueurs(Partie partie);
	List<Partie> listerParties();
	List<Partie> listerPartiesEnAttente();
	List<Partie> listerPartiesTerminees();
	List<Partie> listerPartiesEnCours();
	Partie rechercherPartie(int id);
	boolean rejoindrePartie(Partie partie, Joueur joueur) throws PartieInaccessibleException;
	boolean terminerPartie(Partie partie);
	Tour tourSuivant(Partie partie);
	Partie chargerPartie(Partie partie);
}
